package com.dhl.flyweight;

/**
 * @title: SouneCode
 * @Author danghailiang
 * @Date: 2022/8/16 12:31
 * @Version 1.0
 */
public class SouneCode {
    /**
     * 在Integer#valueOf(X)方法中如果 X 的值  -128<=X<=127 就是使用的享元模式，不在此范围则使用的是new Integer()
     * 小结：
     * 1.在valueOf中，先判断值是否存在IntegerCache中，如果存在则直接返回，不存在则new Integer()进行返回
     * 2.valueOf方法，使用的是享元模式
     * 3.如果使用valueOf得到一个Integer实例，范围在-128 --- 127中执行速度比new快
     * @param args
     */
    public static void main(String[] args) {
        Integer integer1 = new Integer(20);
        Integer integer3 = Integer.valueOf(20);
        Integer integer2 = new Integer(20);
        Integer integer4 = Integer.valueOf(20);
        System.out.println(integer1 == integer2);
        System.out.println(integer1 == integer3);
        System.out.println(integer3 == integer4);

        // 此处valueOf(x) x 不在-128 与 127 范围内
        Integer integer5 = new Integer(200);
        Integer integer6 = Integer.valueOf(200);
        Integer integer7 = Integer.valueOf(200);
        System.out.println(integer5 == integer6);
        System.out.println(integer7 == integer6);

    }
}
